home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK2.toast / Development Kits (Disc 2) / ScriptX / Code Samples / hiarcmen / reqfiles / button.sx
Encoding:
Text File  |  1996-05-21  |  2.4 KB  |  141 lines  |  [TEXT/ttxt]

  1. in module BitmapMenuModule
  2.  
  3. class Button (Actuator)
  4. inst vars
  5.     pressedBitmap
  6.     releasedBitmap
  7.     disabledBitmap
  8.     authordata
  9.     pressAction
  10.     releaseAction
  11.     activateAction
  12.     multiActivateAction
  13. end
  14.  
  15. method handlePress self {class Button} ->
  16. (
  17.     if (self.pressAction != undefined) do
  18.         self.pressAction self.authordata self
  19. )
  20.  
  21. method handleRelease self {class Button} ->
  22. (
  23.     if (self.releaseAction != undefined) do
  24.         self.releaseAction self.authordata self
  25. )
  26.  
  27. method handleActivate self {class Button} ->
  28. (
  29.     if (self.activateAction != undefined) do
  30.         self.activateAction self.authordata self
  31. )
  32.  
  33. method handleMultiActivate self {class Button} n ->
  34. (
  35.     if (self.multiActivateAction != undefined) do
  36.         self.multiActivateAction self.authordata self n
  37. )
  38.  
  39. method setPressedAppearance self {class Button} -> 
  40. (
  41.     if (self.pressedBitmap != undefined) do
  42.         self.boundary := self.pressedBitmap
  43. )
  44.  
  45. method setReleasedAppearance self {class Button} -> 
  46. (
  47.     if (self.releasedBitmap != undefined) do
  48.         self.boundary := self.releasedBitmap
  49. )
  50.     
  51. method setDisabledAppearance self {class Button} -> 
  52. (
  53.     if (self.disabledBitmap != undefined) do
  54.         self.boundary := self.disabledBitmap
  55. )
  56.  
  57. method setActivatedAppearance self {class Button} -> 
  58. (
  59.     setReleasedAppearance self
  60. )
  61.  
  62. method press self {class Button} -> 
  63. (
  64.     if not self.enabled do 
  65.         return
  66.     
  67.     nextmethod self
  68.     
  69.     setPressedAppearance self
  70.     
  71.     handlePress self
  72. )
  73.  
  74. method release self {class Button} -> 
  75. (
  76.     if not self.enabled do 
  77.         return
  78.     
  79.     nextmethod self
  80.  
  81.     setReleasedAppearance self
  82.  
  83.     handleRelease self
  84. )
  85.  
  86. method activate self {class Button} -> 
  87. (
  88.     if not self.enabled do 
  89.         return
  90.                 
  91.     nextmethod self
  92.     
  93.     setActivatedAppearance self
  94.  
  95.     handleActivate self
  96. )
  97.  
  98. method multiActivate self {class Button} n -> 
  99. (
  100.     if not self.enabled do 
  101.         return
  102.                 
  103.     nextmethod self n
  104.     
  105.     setActivatedAppearance self
  106.     
  107.     handleMultiActivate self n
  108. )
  109.  
  110. method enabledSetter self {class Button} value ->
  111. (
  112.     nextmethod self value
  113.  
  114.     if value then
  115.         setReleasedAppearance self
  116.     else
  117.         setDisabledAppearance self
  118.     
  119.     return value
  120. )
  121.  
  122. method init self {class Button} #rest args 
  123.                                 #key pressedBitmap:(undefined) \
  124.                                      releasedBitmap:(undefined) \
  125.                                      disabledBitmap:(undefined) ->
  126. (
  127.     apply nextmethod self args
  128.     self.pressedBitmap := pressedBitmap
  129.     self.releasedBitmap := releasedBitmap
  130.     self.disabledBitmap := disabledBitmap
  131.  
  132.     self
  133. )
  134.  
  135. method afterInit self {class Button} #rest args ->
  136. (
  137.     nextmethod self
  138.     setReleasedAppearance self
  139.     self
  140. )
  141.